package com.appfahrt.persistence.obj.dao.generated;

import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.SimpleTimeZone;

import android.content.Context;
import android.database.Cursor;
import android.util.Log;

import com.appfahrt.persistence.obj.AppFahrtDbDefaultDao;
import com.appfahrt.persistence.obj.dbo.FahrtenDbo;

/**
 * This Class is automatically generated.<br><br>
 *
 * <br><b>DON'T MODIFY THIS FILE</b><br><br>
 *
 * Generated: Sun May 22 22:20:18 CEST 2011
 */
public class FahrtenGeneratedDao extends AppFahrtDbDefaultDao {

	private References references = new References();
	// TAG wird zum Loggen verwendet
	private static final String TAG = FahrtenGeneratedDao.class.getSimpleName();


	/**
	 * Value Holder for the finder methods 
	 * by references.
	 */
	public class References {
	
	}

	/**
	 * Constructor.
	 */
	public FahrtenGeneratedDao(Context pContext) {
		super(pContext);
	}
	
	/**
	 * Returns the finder methods
	 * by references
	 */
	public References getReferences() {
		return this.references;
	}
/*
	public FahrtenDbo findWithPrimaryKey() throws SQLException {
		FahrtenDbo result = null;
		findBySqlReturnObject(
			FahrtenDbo.class, 
			"SELECT * FROM ${schema}.fahrten WHERE ", 
			new Object[]{});
		return result;
	}
	@SuppressWarnings("unchecked")
	public ArrayList<FahrtenDbo> findBySqlReturnArrayList(String sql, Object[] param) throws SQLException {
		ArrayList<FahrtenDbo> result = null;
		result = findBySqlReturnArrayList(
			FahrtenDbo.class, 
			sql, 
			param);
		return result;
	}
*/	
	public FahrtenDbo findById(long pId) throws SQLException {
		FahrtenDbo aResult = null;
		String aSql = "SELECT * FROM FAHRTEN WHERE ID = ?";
		String [] aParam = new String []{String.valueOf(pId)};
		Cursor aValue =  findObject(aSql,aParam);
		if (aValue != null && aValue.moveToFirst() != false && aValue.getCount() == 1) {
			aResult = new FahrtenDbo();
			aResult.setFkIdAdresseStart(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fk_id_adresse_start))));
			aResult.setFkIdAdresseZiel(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fk_id_adresse_ziel))));
			aResult.setAktuelleLatitude(Float.parseFloat(aValue.getString(aValue.getColumnIndex(FahrtenDbo.aktuelle_latitude))));
			aResult.setAktuelleLogitude(Float.parseFloat(aValue.getString(aValue.getColumnIndex(FahrtenDbo.aktuelle_logitude))));
//			aResult.setFahrtGestartet(Date.valueOf(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fahrt_gestartet))));
			aResult.setFkIdFahrzeug(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fk_id_fahrzeug))));
			aResult.setPreis(Float.parseFloat(aValue.getString(aValue.getColumnIndex(FahrtenDbo.preis))));
			aResult.setId(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.ID))));
			aResult.setFkIdProfilFahrtenanbieter(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fk_id_profil_fahrtenanbieter))));

		}
		if(aValue!=null){
			aValue.close();
		}

		return aResult;
	}
	
	public FahrtenDbo findFahrtByReiseZiel(String pFahrziel) throws SQLException {
		FahrtenDbo aResult = null;
		String aSql = "SELECT * FROM FAHRTEN WHERE fahrt_gestartet = true AND fk_id_adresse_ziel = 4";
//		String [] aParam = new String []{""};
		Cursor aValue =  findObject(aSql,null);
		if (aValue != null && aValue.moveToFirst() != false && aValue.getCount() == 1) {
			aResult = new FahrtenDbo();
//				String aMethode = Utility.createJavaSetMethodeFromFieldName(true,aColumns[i]);
//				ReflectionUtility.executeMethod(aResult, aMethode, aParameter);
				aResult.setFkIdAdresseStart(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fk_id_adresse_start))));
				aResult.setFkIdAdresseZiel(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fk_id_adresse_ziel))));
				aResult.setAktuelleLatitude(Float.parseFloat(aValue.getString(aValue.getColumnIndex(FahrtenDbo.aktuelle_latitude))));
				aResult.setAktuelleLogitude(Float.parseFloat(aValue.getString(aValue.getColumnIndex(FahrtenDbo.aktuelle_logitude))));
//				aResult.setFahrtGestartet(Date.valueOf(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fahrt_gestartet))));
				aResult.setFkIdFahrzeug(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fk_id_fahrzeug))));
				aResult.setPreis(Float.parseFloat(aValue.getString(aValue.getColumnIndex(FahrtenDbo.preis))));
				aResult.setId(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.ID))));
				aResult.setFkIdProfilFahrtenanbieter(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fk_id_profil_fahrtenanbieter))));

		}
		if(aValue!=null){
			aValue.close();
		}

		return aResult;
	}
	
	public FahrtenDbo findFahrtByReiseZielAndReisebeginn(String pFahrzielId,String pReiseBeginn) throws SQLException {
		FahrtenDbo aResult = null;
		String aSql = "SELECT * FROM FAHRTEN WHERE "+FahrtenDbo.fk_id_adresse_ziel+ " = ? AND "+FahrtenDbo.fahrt_gestartet+" = ?";
		String [] aParam = new String []{pFahrzielId,pReiseBeginn};
		Cursor aValue =  findObject(aSql,aParam);
		if (aValue != null && aValue.moveToFirst() != false && aValue.getCount() == 1) {
			aResult = new FahrtenDbo();
//				String aMethode = Utility.createJavaSetMethodeFromFieldName(true,aColumns[i]);
//				ReflectionUtility.executeMethod(aResult, aMethode, aParameter);
				aResult.setFkIdAdresseStart(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fk_id_adresse_start))));
				aResult.setFkIdAdresseZiel(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fk_id_adresse_ziel))));
				aResult.setAktuelleLatitude(Float.parseFloat(aValue.getString(aValue.getColumnIndex(FahrtenDbo.aktuelle_latitude))));
				aResult.setAktuelleLogitude(Float.parseFloat(aValue.getString(aValue.getColumnIndex(FahrtenDbo.aktuelle_logitude))));
//				aResult.setFahrtGestartet(Date.valueOf(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fahrt_gestartet))));
				aResult.setFkIdFahrzeug(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fk_id_fahrzeug))));
				aResult.setPreis(Float.parseFloat(aValue.getString(aValue.getColumnIndex(FahrtenDbo.preis))));
				aResult.setId(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.ID))));
				aResult.setFkIdProfilFahrtenanbieter(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fk_id_profil_fahrtenanbieter))));

		}
		if(aValue!=null){
			aValue.close();
		}

		return aResult;
	}
	
	
	public FahrtenDbo findFahrtByProfilId(int pProfilId) throws SQLException {
		FahrtenDbo aResult = null;
		String aSql = "SELECT * FROM FAHRTEN WHERE "+FahrtenDbo.fk_id_profil_fahrtenanbieter+"=?";
		String [] aParam = new String []{String.valueOf(pProfilId)};
		Cursor aValue =  findObject(aSql,aParam);
		if (aValue != null && aValue.moveToFirst() != false && aValue.getCount() == 1) {
			aResult = new FahrtenDbo();
//				String aMethode = Utility.createJavaSetMethodeFromFieldName(true,aColumns[i]);
//				ReflectionUtility.executeMethod(aResult, aMethode, aParameter);
				aResult.setFkIdAdresseStart(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fk_id_adresse_start))));
				aResult.setFkIdAdresseZiel(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fk_id_adresse_ziel))));
				aResult.setAktuelleLatitude(Float.parseFloat(aValue.getString(aValue.getColumnIndex(FahrtenDbo.aktuelle_latitude))));
				aResult.setAktuelleLogitude(Float.parseFloat(aValue.getString(aValue.getColumnIndex(FahrtenDbo.aktuelle_logitude))));
//				aResult.setFahrtGestartet(Date.valueOf(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fahrt_gestartet))));
				aResult.setFkIdFahrzeug(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fk_id_fahrzeug))));
				aResult.setPreis(Float.parseFloat(aValue.getString(aValue.getColumnIndex(FahrtenDbo.preis))));
				aResult.setId(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.ID))));
				aResult.setFkIdProfilFahrtenanbieter(Long.parseLong(aValue.getString(aValue.getColumnIndex(FahrtenDbo.fk_id_profil_fahrtenanbieter))));

		}
		if(aValue!=null){
			aValue.close();
		}

		return aResult;
	}
	
	
	public boolean createFahrt(int pUseRrofil,int pFreieSitze,float pPreis, boolean pFahrtgestartet,
			boolean pFahrtbeendet, float pAktuelleLogitude, float pAktuelleLatitude,int pAdresseStart, int pAdresseZiel,int pIdFahrzeug) throws SQLException {
		String aSql = "INSERT INTO FAHRTEN VALUES(?,?,?,?,?,?,?,?,?,?)";
		String [] aParam = new String []{String.valueOf(pUseRrofil),String.valueOf(pFreieSitze),String.valueOf(pPreis),String.valueOf(pFahrtgestartet),
				String.valueOf(pFahrtbeendet),String.valueOf(pAktuelleLogitude),String.valueOf(pAktuelleLatitude),
				String.valueOf(pAdresseStart),String.valueOf(pAdresseZiel),String.valueOf(pIdFahrzeug)};
		executeInsertStatement(aSql,aParam);
		return true;
	}
	
	public FahrtenDbo createFahrt(FahrtenDbo pFahrten) throws SQLException {
		String aSql = "INSERT INTO FAHRTEN ("+
		FahrtenDbo.fk_id_profil_fahrtenanbieter+","+
		FahrtenDbo.freie_size+","+
		FahrtenDbo.preis+","+
		FahrtenDbo.fahrt_gestartet+","+
		FahrtenDbo.fahrt_beendet+","+
		FahrtenDbo.aktuelle_logitude+","+
		FahrtenDbo.aktuelle_latitude+","+
		FahrtenDbo.fk_id_adresse_start+","+
		FahrtenDbo.fk_id_adresse_ziel+","+
		FahrtenDbo.fk_id_fahrzeug+") VALUES(?,?,?,?,?,?,?,?,?,?)";
		
		String aFkIdProfil = null;
		String aFreiseSitze = null;
		String aPreis = null;
		String aFahrtgestarte = null;
		String aFahrtbeendet = null;
		String aAkutelleLognitude = null;
		String aAktuelleLattitue = null;
		String aFkIdAdresseStart = null;
		String aFkIdAdresseZiel = null;
		String aFkIdFahrzeug = null;
		
		if(pFahrten != null){
			if(pFahrten.getFkIdProfilFahrtenanbieter()!=null){
				aFkIdProfil = String.valueOf(pFahrten.getFkIdProfilFahrtenanbieter());
			}else{
				aFkIdProfil ="-1";
			}
			if(pFahrten.getFreieSize()!=null){
				aFreiseSitze = String.valueOf(pFahrten.getFreieSize());
			}else{
				aFreiseSitze = "-1";
			}
			if(pFahrten.getPreis()!=null){
				aPreis = String.valueOf((pFahrten.getPreis()));
			}else{
				aPreis = "-1";
			}
			if(pFahrten.getFahrtGestartet()!=null){
				aFahrtgestarte = String.valueOf(pFahrten.getFahrtGestartet());
			}else{
				aFahrtgestarte="";
			}
			if(pFahrten.getFahrtBeendet()!=null){
				aFahrtbeendet = String.valueOf((pFahrten.getFahrtBeendet()));
			}else{
				aFahrtbeendet ="";
			}
			if(pFahrten.getAktuelleLogitude()!=null){
				aAkutelleLognitude = String.valueOf((pFahrten.getAktuelleLogitude()));
			}else{
				aAkutelleLognitude ="-1";
			}
			if(pFahrten.getAktuelleLatitude()!=null){
				aAktuelleLattitue = String.valueOf((pFahrten.getAktuelleLatitude()));
			}else{
				aAktuelleLattitue ="-1";
			}
			if(pFahrten.getFkIdAdresseStart()!=null){
				aFkIdAdresseStart = String.valueOf((pFahrten.getFkIdAdresseStart()));
			}else{
				aFkIdAdresseStart = "-1";
			}
			if(pFahrten.getFkIdAdresseZiel()!=null){
				aFkIdAdresseZiel = String.valueOf((pFahrten.getFkIdAdresseZiel()));
			}else{
				aFkIdAdresseZiel = "-1";
			}
			if(pFahrten.getFkIdFahrzeug()!=null){
				aFkIdFahrzeug = String.valueOf((pFahrten.getFkIdFahrzeug()));
			}else{
				aFkIdFahrzeug = "-1";
			}
		}

		String[] aParam = new String[] { aFkIdProfil, aFreiseSitze, aPreis,
				aFahrtgestarte, aFahrtbeendet, aAkutelleLognitude,
				aAktuelleLattitue, aFkIdAdresseStart, aFkIdAdresseZiel,
				aFkIdFahrzeug };
		Log.e(TAG,"insert Fahrten");
		executeInsertStatement(aSql, aParam);
		
		pFahrten = findFahrtByReiseZielAndReisebeginn(aFkIdAdresseZiel,aFahrtgestarte);
		return pFahrten;
	}
	
	
	

// FINDER BY INDEX

// Equals


// GreaterThan, GreaterEqualThan, LessThan, LessOrEqualThan

}